home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 6 / CU Amiga Magazine's Super CD-ROM 06 (1996)(EMAP Images)(GB)(Track 1 of 4)[!][issue 1997-01].iso / cucd / prog / gnu-c / include / sys / termios.h < prev    next >
C/C++ Source or Header  |  1994-02-22  |  9KB  |  265 lines

  1. /*
  2.  * Copyright (c) 1988, 1989 The Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  * 3. All advertising materials mentioning features or use of this software
  14.  *    must display the following acknowledgement:
  15.  *    This product includes software developed by the University of
  16.  *    California, Berkeley and its contributors.
  17.  * 4. Neither the name of the University nor the names of its contributors
  18.  *    may be used to endorse or promote products derived from this software
  19.  *    without specific prior written permission.
  20.  *
  21.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31.  * SUCH DAMAGE.
  32.  *
  33.  *    @(#)termios.h    7.22 (Berkeley) 5/7/91
  34.  */
  35.  
  36. /*
  37.  *  termios structure
  38.  */
  39. #ifndef _TERMIOS_H_
  40. #define _TERMIOS_H_
  41.  
  42. /* 
  43.  * Special Control Characters 
  44.  *
  45.  * Index into c_cc[] character array.
  46.  *
  47.  *    Name         Subscript    Enabled by 
  48.  */
  49. #define    VEOF        0    /* ICANON */
  50. #define    VEOL        1    /* ICANON */
  51. #ifndef _POSIX_SOURCE
  52. #define    VEOL2        2    /* ICANON */
  53. #endif
  54. #define    VERASE        3    /* ICANON */
  55. #ifndef _POSIX_SOURCE
  56. #define VWERASE     4    /* ICANON */
  57. #endif 
  58. #define VKILL        5    /* ICANON */
  59. #ifndef _POSIX_SOURCE
  60. #define    VREPRINT     6    /* ICANON */
  61. #endif
  62. /*            7       spare 1 */
  63. #define VINTR        8    /* ISIG */
  64. #define VQUIT        9    /* ISIG */
  65. #define VSUSP        10    /* ISIG */
  66. #ifndef _POSIX_SOURCE
  67. #define VDSUSP        11    /* ISIG */
  68. #endif
  69. #define VSTART        12    /* IXON, IXOFF */
  70. #define VSTOP        13    /* IXON, IXOFF */
  71. #ifndef _POSIX_SOURCE
  72. #define    VLNEXT        14    /* IEXTEN */
  73. #define    VDISCARD    15    /* IEXTEN */
  74. #endif
  75. #define VMIN        16    /* !ICANON */
  76. #define VTIME        17    /* !ICANON */
  77. #ifndef _POSIX_SOURCE
  78. #define VSTATUS        18    /* ICANON */
  79. /*            19       spare 2 */
  80. #define    NCCS        20
  81. #endif
  82.  
  83. #define _POSIX_VDISABLE    ((unsigned char)'\377')
  84.  
  85. #ifndef _POSIX_SOURCE
  86. #define CCEQ(val, c)    (c == val ? val != _POSIX_VDISABLE : 0)
  87. #endif
  88.  
  89. /*
  90.  * Input flags - software input processing
  91.  */
  92. #define    IGNBRK        0x00000001    /* ignore BREAK condition */
  93. #define    BRKINT        0x00000002    /* map BREAK to SIGINTR */
  94. #define    IGNPAR        0x00000004    /* ignore (discard) parity errors */
  95. #define    PARMRK        0x00000008    /* mark parity and framing errors */
  96. #define    INPCK        0x00000010    /* enable checking of parity errors */
  97. #define    ISTRIP        0x00000020    /* strip 8th bit off chars */
  98. #define    INLCR        0x00000040    /* map NL into CR */
  99. #define    IGNCR        0x00000080    /* ignore CR */
  100. #define    ICRNL        0x00000100    /* map CR to NL (ala CRMOD) */
  101. #define    IXON        0x00000200    /* enable output flow control */
  102. #define    IXOFF        0x00000400    /* enable input flow control */
  103. #ifndef _POSIX_SOURCE
  104. #define    IXANY        0x00000800    /* any char will restart after stop */
  105. #define IMAXBEL        0x00002000    /* ring bell on input queue full */
  106. #endif  /*_POSIX_SOURCE */
  107.  
  108. /*
  109.  * Output flags - software output processing
  110.  */
  111. #define    OPOST        0x00000001    /* enable following output processing */
  112. #ifndef _POSIX_SOURCE
  113. #define ONLCR        0x00000002    /* map NL to CR-NL (ala CRMOD) */
  114. #define OXTABS        0x00000004    /* expand tabs to spaces */
  115. #define ONOEOT        0x00000008    /* discard EOT's (^D) on output) */
  116. #endif  /*_POSIX_SOURCE */
  117.  
  118. /*
  119.  * Control flags - hardware control of terminal
  120.  */
  121. #ifndef _POSIX_SOURCE
  122. #define    CIGNORE        0x00000001    /* ignore control flags */
  123. #endif
  124. #define CSIZE        0x00000300    /* character size mask */
  125. #define     CS5            0x00000000        /* 5 bits (pseudo) */
  126. #define     CS6            0x00000100        /* 6 bits */
  127. #define     CS7            0x00000200        /* 7 bits */
  128. #define     CS8            0x00000300        /* 8 bits */
  129. #define CSTOPB        0x00000400    /* send 2 stop bits */
  130. #define CREAD        0x00000800    /* enable receiver */
  131. #define PARENB        0x00001000    /* parity enable */
  132. #define PARODD        0x00002000    /* odd parity, else even */
  133. #define HUPCL        0x00004000    /* hang up on last close */
  134. #define CLOCAL        0x00008000    /* ignore modem status lines */
  135. #ifndef _POSIX_SOURCE
  136. #define CCTS_OFLOW    0x00010000    /* CTS flow control of output */
  137. #define CRTSCTS        CCTS_OFLOW    /* ??? */
  138. #define CRTS_IFLOW    0x00020000    /* RTS flow control of input */
  139. #define    MDMBUF        0x00100000    /* flow control output via Carrier */
  140. #endif
  141.  
  142.  
  143. /* 
  144.  * "Local" flags - dumping ground for other state
  145.  *
  146.  * Warning: some flags in this structure begin with
  147.  * the letter "I" and look like they belong in the
  148.  * input flag.
  149.  */
  150.  
  151. #ifndef _POSIX_SOURCE
  152. #define    ECHOKE        0x00000001    /* visual erase for line kill */
  153. #endif  /*_POSIX_SOURCE */
  154. #define    ECHOE        0x00000002    /* visually erase chars */
  155. #define    ECHOK        0x00000004    /* echo NL after line kill */
  156. #define ECHO        0x00000008    /* enable echoing */
  157. #define    ECHONL        0x00000010    /* echo NL even if ECHO is off */
  158. #ifndef _POSIX_SOURCE
  159. #define    ECHOPRT        0x00000020    /* visual erase mode for hardcopy */
  160. #define ECHOCTL      0x00000040    /* echo control chars as ^(Char) */
  161. #endif  /*_POSIX_SOURCE */
  162. #define    ISIG        0x00000080    /* enable signals INTR, QUIT, [D]SUSP */
  163. #define    ICANON        0x00000100    /* canonicalize input lines */
  164. #ifndef _POSIX_SOURCE
  165. #define ALTWERASE    0x00000200    /* use alternate WERASE algorithm */
  166. #endif  /*_POSIX_SOURCE */
  167. #define    IEXTEN        0x00000400    /* enable DISCARD and LNEXT */
  168. #define EXTPROC         0x00000800      /* external processing */
  169. #define TOSTOP        0x00400000    /* stop background jobs from output */
  170. #ifndef _POSIX_SOURCE
  171. #define FLUSHO        0x00800000    /* output being flushed (state) */
  172. #define    NOKERNINFO    0x02000000    /* no kernel output from VSTATUS */
  173. #define PENDIN        0x20000000    /* XXX retype pending input (state) */
  174. #endif  /*_POSIX_SOURCE */
  175. #define    NOFLSH        0x80000000    /* don't flush after interrupt */
  176.  
  177. typedef unsigned long    tcflag_t;
  178. typedef unsigned char    cc_t;
  179. typedef long        speed_t;
  180.  
  181. struct termios {
  182.     tcflag_t    c_iflag;    /* input flags */
  183.     tcflag_t    c_oflag;    /* output flags */
  184.     tcflag_t    c_cflag;    /* control flags */
  185.     tcflag_t    c_lflag;    /* local flags */
  186.     cc_t        c_cc[NCCS];    /* control chars */
  187.     long        c_ispeed;    /* input speed */
  188.     long        c_ospeed;    /* output speed */
  189. };
  190.  
  191. /* 
  192.  * Commands passed to tcsetattr() for setting the termios structure.
  193.  */
  194. #define    TCSANOW        0        /* make change immediate */
  195. #define    TCSADRAIN    1        /* drain output, then change */
  196. #define    TCSAFLUSH    2        /* drain output, flush input */
  197. #ifndef _POSIX_SOURCE
  198. #define TCSASOFT    0x10        /* flag - don't alter h.w. state */
  199. #endif
  200.  
  201. /*
  202.  * Standard speeds
  203.  */
  204. #define B0    0
  205. #define B50    50
  206. #define B75    75
  207. #define B110    110
  208. #define B134    134
  209. #define B150    150
  210. #define B200    200
  211. #define B300    300
  212. #define B600    600
  213. #define B1200    1200
  214. #define    B1800    1800
  215. #define B2400    2400
  216. #define B4800    4800
  217. #define B9600    9600
  218. #define B19200    19200
  219. #define B38400    38400
  220. #ifndef _POSIX_SOURCE
  221. #define EXTA    19200
  222. #define EXTB    38400
  223. #endif  /*_POSIX_SOURCE */
  224.  
  225. #ifndef KERNEL
  226.  
  227. #include <sys/cdefs.h>
  228.  
  229. __BEGIN_DECLS
  230. speed_t    cfgetispeed __P((const struct termios *));
  231. speed_t    cfgetospeed __P((const struct termios *));
  232. int    cfsetispeed __P((struct termios *, speed_t));
  233. int    cfsetospeed __P((struct termios *, speed_t));
  234. int    tcdrain __P((int));
  235. int    tcflow __P((int, int));
  236. int    tcflush __P((int, int));
  237. int    tcgetattr __P((int, struct termios *));
  238. int    tcsendbreak __P((int, int));
  239. int    tcsetattr __P((int, int, const struct termios *));
  240.  
  241. #define    TCIFLUSH    1
  242. #define    TCOFLUSH    2
  243. #define TCIOFLUSH    3
  244. #define    TCOOFF        1
  245. #define    TCOON        2
  246. #define TCIOFF        3
  247. #define TCION        4
  248.  
  249. #ifndef _POSIX_SOURCE
  250. void    cfmakeraw __P((struct termios *));
  251. void    cfsetspeed __P((struct termios *, speed_t));
  252. #endif /* !POSIX */
  253. __END_DECLS
  254.  
  255. #endif /* !KERNEL */
  256.  
  257. /*
  258.  * END OF PROTECTED INCLUDE.
  259.  */
  260. #endif /* !_TERMIOS_H_ */
  261.  
  262. #ifndef _POSIX_SOURCE
  263. #include <sys/ttydefaults.h>
  264. #endif  /*_POSIX_SOURCE */
  265.